The present invention is intended to be utilized with a printer controller for a laser printer engine which has, for example, 400 Dots Per Inch (DPI) with 20 pages per minute (ppm) speed. Because such an engine has higher speed and higher resolution, the printer controller requirements are more severe than 300 DPI and 8 ppm engines.
One of the key components to achieve higher speed and higher resolution is the control of a frame buffer used to buffer raster image information to be sent to the printer engine through a video interface.
In order to print through a laser printer, each pixel (picture element) must be defined as either black or white. A pixel is processed by the CPU (Central Processing Unit) of a controller and sent to the laser printer engine through video interface line(s). One major problem in this process of defining pixels of a page and sending the information to the printer engine is that the CPU is much slower in the processing time required to define the pixels than the printer engine needing them. One solution of this asynchronous process is to use a frame buffer for the synchronization.
There are two approaches in the prior art to construct a frame buffer. One approach is to create an entire page pixel definition by using a full bit map.
For example, if the printer engine is 300 DPI and handles only a letter size document, the buffer requires 2550.times.3300 pixels. The first number denotes the X dimension of the scanning (the number of pixels per scan line) and the second number denotes the number of scan lines (the Y dimension).
The other prior art approach is to receive an entire page description from a host computer and to create a display list. Under this approach, the frame buffer can be smaller than the full bit map depending upon the speed of creating the raster data from the display list. The frame buffer, which is smaller than full page bit map, is referred to as a band buffer.
When the frame buffer information is sent to the printer engine, the data in the memory of that location must be erased before other information can be written. If this erase is done by a CPU, the processing power of the CPU is taken up and less processing time is available to the CPU. The ideal solution is that the hardware reads out information from the buffer to be sent to the printer engine and at the same time writes the modified data to be blanked to the same location. However, none of the currently available Direct Memory Access (DMA) chips can memory-read-modify-write in one memory cycle.
The prior art approaches of constructing a frame buffer is to either fix the X and Y dimensions or fix the these prior allowing the extension of the Y dimension. The problem with these prior approaches is that both result in a waste of buffer space when paper sizes change. For example, some printer engines allow users to change paper trays. Therefore, in order to accommodate the largest paper input, the X dimension of the buffer must have 4400 pixels. However, when a letter size tray is used with an 8.5 edge to the X dimension, the requirement of the X dimension is only 3400 pixels, wasting 1000 pixels (124 bytes).